---
id: devicevariable
title: 变量管理
---

:::tip `配置须知`

 更改采集设备/变量/上传设备/插件等，需要重启线程（网关状态-运行状态-全部重启/单个设备重启）

:::

:::tip `说明`

ThingsGateway里的变量是对于实际需进行采集的寄存器或者需要执行的方法的配置

:::

## 一、添加/修改变量


### 1、变量基本属性

![](/img/docs/devicevariable-1.png)

:::tip `说明`

基本属性中定义采集对应协议所需的配置

:::
|属性名称| 属性描述| 备注|
|-----------|--------------|-----------------|
|名称| 当前变量名称，全局唯一(变量)| |
|描述| 当前变量描述 ||
|设备| 当前采集设备选择的设备，通过级联选择器选择对应设备名称设置 ||
|执行间隔| 读取时间间隔/执行特殊方法读取的间隔 ||
|变量地址| PLC寄存器/OPC ITEMID等 |对于不同插件的设备,变量地址配置不相同,查看对应的插件说明|
|读写权限| 读写/只写/只读 ||
|数据类型| 对应的数据类型 |注意除了特殊驱动，一般不应该选择object|
|读取表达式| 动态解析的表达式 ,原始值的代码为raw|示例：``raw*10+3`` 结果：原始值raw为8,输出实时值83 。具体可查看 [ExpressionEvaluator WiKi](https://github.com/codingseb/ExpressionEvaluator)|
|写入表达式| 动态解析的表达式，在写入值时转化,原始值的代码为raw|示例：``raw/10`` 结果：写入值为230时，会下发23到PLC 。具体可查看 [ExpressionEvaluator WiKi](https://github.com/codingseb/ExpressionEvaluator)|
|允许远程写入| 对于变量的单独写入使能配置 ||
|特殊方法| 某些插件特有的方法 |对于不同的插件,特殊方法配置不相同,查看对应的插件说明|

:::tip `表达式特别说明`

网关还支持表达式的动态传入,除了raw表示该变量读取的原始值外,还支持其他变量的值传入表达式
举例：
  ```csharp
  
  //新建testInt1,testInt2两个变量

  //在testInt1的读取表达式中定义

    raw*testInt2+3

  //原始值raw为8,testInt2为100，输出实时值803

  ```

:::
### 2、变量报警属性

![](/img/docs/devicevariable-2.png)
:::tip `说明`

报警属性中定义变量产生报警的规则所需的配置
若需要历史报警存储,还需要启用网关的[报警转储服务](./otherconfig.mdx#1报警转储)

:::
|属性名称| 属性描述| 备注|
|-----------|--------------|-----------------|
|报警使能| 启用对应报警功能| |
|报警限值| 超限时产生报警，布尔量为固定 ||
|报警文本| 对应显示的报警文本 ||
|报警约束| 动态解析的表达式 ,原始值的代码为raw，计算值为true时才能产生报警 ||

### 3、变量历史属性

![](/img/docs/devicevariable-3.png)
:::tip `说明`

历史属性中定义变量产生历史数据的规则所需的配置
除了单独对于变量进行配置外,还需要启用网关的[历史转储服务](./otherconfig.mdx#2历史转储)

:::
|属性名称| 属性描述| 备注|
|-----------|--------------|-----------------|
|历史使能| 启用对应历史转储功能| |
|存储类型| Collect/Change |1、Collect ：每次采集存储一次 2、Change ：每次变化存储一次|

### 4、变量上传属性

:::tip `说明`

上传属性中定义变量关联的上传设备所需的配置

在配置前，需新建完成上传设备

:::

选择上传设备，点击添加属性

![](/img/docs/devicevariable-4.png)

不同上传插件的变量上传属性说明，请查看对应的插件说明

![](/img/docs/devicevariable-5.png)


## 二、导入导出变量


 移至 [采集设备](./collectdevice.mdx#二导入导出采集设备) 查看




